package com.hangxin.system.service.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.hangxin.commons.service.impl.BasicServiceImpl;
import com.hangxin.commons.util.PageModel;
import com.hangxin.system.dao.SyslogDao;
import com.hangxin.system.model.Syslog;
import com.hangxin.system.service.SyslogService;

/**
 * 
 * 类名称：SyslogService.java
 * <P/>
 * 类描述： 系统日志操作的Service的接口的实现类
 * <P/>
 * 创建时间：2014年4月1日
 * <P/>
 * 创建人： 冯奇
 * <P/>
 * 联系方式： 1726021389@qq.com
 * <P/>
 * 修改人：李志远
 * <P/>
 * 修改时间：2014年4月16日
 * <P/>
 * 修改备注：添加保存日志方法
 * <P/>
 * 版本：v1.0
 * 
 */
@Service
public class SyslogServiceImpl extends BasicServiceImpl implements SyslogService
{
	@Resource
	private SyslogDao syslogDaoImpl;



	/**
	 * 
	 * 功能描述：系统日志分页查询
	 * <P/>
	 * 创建时间：2014年4月16日
	 * <P/>
	 * 创建人： 李志远
	 * <P/>
	 * 联系方式： 1726021389@qq.com
	 * 
	 * @param pageno
	 * @param pages
	 * @param content
	 * @return
	 */
	public PageModel<Map<String, Object>> searchLog(PageModel<Map<String, Object>> pageModel, String content){
		Object[] paramscount = null;
		Object[] params = null;
		
	
			paramscount = new Object[] {content};
			params = new Object[] { content,(pageModel.getPageNo() - 1) * pageModel.getPageSize(),pageModel.getPageSize() };
		
		return syslogDaoImpl.getLogs(pageModel, paramscount, params);
	}



	/**
	 * 
	 * 功能描述：拼接sql语句
	 * <P/>
	 * 创建时间：2014年4月16日
	 * <P/>
	 * 创建人： 李志远
	 * <P/>
	 * 联系方式： 1726021389@qq.com
	 * 
	 * @param content
	 * @param params
	 * @param paramcounts
	 * @return
	 */
	private String selectParam(Map<String, Object> content, List<Object> params, List<Object> paramcounts)
	{
		StringBuffer dysql = new StringBuffer();
		if (content.get("logtype") != null && !"".equals(content.get("logtype")))
		{
			dysql.append(" and logtype=?");
			params.add(content.get("logtype"));
			paramcounts.add(content.get("logtype"));
		}
		if (content.get("logmodual") != null && !"".equals(content.get("logmodual")))
		{
			dysql.append(" and modular=?");
			params.add(content.get("logmodual"));
			paramcounts.add(content.get("logmodual"));
		}
		if (content.get("beginDate") != null && !"".equals(content.get("beginDate")))
		{
			dysql.append(" and t.addtime>=?");
			params.add(content.get("beginDate"));
			paramcounts.add(content.get("beginDate"));
		}
		if (content.get("endDate") != null && !"".equals(content.get("endDate")))
		{
			dysql.append(" and t.addtime<=?");
			params.add(content.get("endDate"));
			paramcounts.add(content.get("endDate"));
		}
		if (content.get("userid") != null && !"".equals(content.get("userid")))
		{
			dysql.append(" and userid=?");
			params.add(content.get("userid"));
			paramcounts.add(content.get("userid"));
		}
		if (content.get("loginname") != null && !"".equals(content.get("loginname")))
		{
			dysql.append(" and loginname=?");
			params.add(content.get("loginname"));
			paramcounts.add(content.get("loginname"));
		}
		return dysql.toString();
	}



	/**
	 * 
	 * 功能描述：保存日志操作信息
	 * <P/>
	 * 创建时间：2014年4月16日
	 * <P/>
	 * 创建人： 李志远
	 * <P/>
	 * 联系方式： 1726021389@qq.com
	 * 
	 * @param syslog
	 * @return
	 */
	@Transactional
	public Integer save(Syslog syslog)
	{
		return syslogDaoImpl.save(syslog);
	}



	/**
	 * 
	 * 功能描述：根据loginid查询用户信息
	 * <P/>
	 * 创建时间：2014年4月17日
	 * <P/>
	 * 创建人： 李志远
	 * <P/>
	 * 联系方式： 1726021389@qq.com
	 * 
	 * @param loginId
	 * @return
	 */
	@Override
	public Map<String, Object> findMapByLoginId(String loginId)
	{
		return syslogDaoImpl.findMapByLoginId(loginId);
	}



	/**
	 * 
	 * 功能描述：根据loginid分页查询
	 * <P/>
	 * 创建时间：2014年4月17日
	 * <P/>
	 * 创建人： 李志远
	 * <P/>
	 * 联系方式： 1726021389@qq.com
	 * 
	 * @param pageno
	 * @param pages
	 * @param content
	 * @return
	 */
	@Override
	public PageModel<Map<String, Object>> pagebyLoginId(int pageno, int pages,String loginid,String type, Map<String, Object> map)
	{
		PageModel<Map<String, Object>> pageModel = new PageModel<Map<String, Object>>(pageno, pages);
		List<Object> params = new ArrayList<Object>();
		List<Object> paramcounts = new ArrayList<Object>();
		params.add(type);
		params.add(loginid);
		paramcounts.add(type);
		paramcounts.add(loginid);
		String dysql = selectParam(map, params, paramcounts);
		params.add(pageModel.getPageNo() * pageModel.getPageSize());
		params.add(pageModel.getPageNo() * pageModel.getPageSize() - pageModel.getPageSize());
		return syslogDaoImpl.pagebyLoginId(pageModel, paramcounts.toArray(), params.toArray(), dysql);
	}

}
